perm filename ADDCLC.ADD[HAL,HE] blob sn#165113 filedate 1975-06-20 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	  ADDCLC
C00004 ENDMK
CāŠ—;
;  ADDCLC

;  Adds a calculator cell ADD.CLC to the graph node ADD.ND.

ROUTINE ADDCLC,<ADC.GN,ADC.IPC>;
	MOV #CLCCSZ,R0		;
	JSR PC,GTFREE		;R0 ← LOC[new calculator cell]
	MOV DLC.GN(RF),R1	;R1 ← Graph node in question
	MOV NXTCLC(R1),NXTCLC(R0);Link in the new one
	MOV R0,GNCLCS(R1)	;
	;Finish this later

ROUTINE ADDCLC,<ADD.ND,ADD.CLC>
	MOV	R2,-(SP)	;SAVE A REGISTER
	MOV	R3,-(SP)	;SAVE A REGISTER
	MOV	ADD.ND(RF),R3	;THE NODE
	MOV	ADD.CLC(RF),R1	;THE CALCULATOR
	MOV	GNCLCS(R3),NXTCLC(R1) ;CURRENT CALCULATOR LIST
	MOV	NEEDED(R1),R2	;LIST OF NEEDED NODES
	BEQ	ACLC.X		;ALL DONE
ACLC.1:	JSR	PC,GET2WD	;GET A TWO-WORD CELL
	MOV	R3,DATUM(R0)	;THIS NODE IS NOW A DEPENDENT OF
	MOV	DATUM(R2),R1	;THE NEEDED NODE
	MOV	GNDEPS(R1),LINKF(R0) ;ADD IT TO THE DEPENDENTS LIST
	MOV	R0,GNDEPS(R1)	;
	MOV	LINKF(R2),R2	;NEXT NEEDED NODE
	BNE	ACLC.1		;
ACLC.X:	MOV	(SP)+,R3	;RESTORE ACS
	MOV	(SP)+,R2
	RTS	R5